查看原文
其他

Stata绘图:回归系数可视化-multicoefplot

连享会 连享会 2022-06-12

👇 连享会 · 推文导航 | www.lianxh.cn

连享会 · 效率分析专题

作者:谢佳松 (中山大学)
邮箱:xiejs3@mail2.sysu.edu.cn

温馨提示: 文中链接在微信中无法生效。请点击底部「阅读原文」。或直接长按/扫描如下二维码,直达原文:


目录

  • 1. 简介

  • 2. multicoefplot 命令

  • 3. 实例演示

    • 3.1 数据处理

    • 3.2 图像绘制

    • 3.3 同时估计并可视化不同模型

  • 4. 相关推文



1. 简介

本文主要介绍由苏黎世联邦理工学院教授 Matteo Pinna 开发的,用于时间维度横截面分析的可视化操作命令 multicoefplot。该命令最大的优势是在横截面比较的同时,允许不同控制变量集下得到的点估计系数以及置信区间进行直接比较。

2. multicoefplot 命令

multicoefplot 命令安装:

net describe multicoefplot, from(http://fmwww.bc.edu/RePEc/bocode/m)
net install multicoefplot.pkg, replace
net get multicoefplot.pkg, replace

multicoefplot 命令使用前需要了解的相关事项:

  • 第一,使用 multicoefplot 命令前必须将回归分析中常用的长面板数据 reshape 成宽面板数据。因此,建议使用者在利用该命令绘图时,重新生成一个 do file,然后更换数据结构后再进行操作;
  • 第二,该命令的写法基于高维固定效应命令 reghdfe。关于 reghdfe 命令的详细介绍,可以参考连享会推文「reghdfe:多维面板固定效应估计」。

multicoefplot 命令语法:

multicoefplot {namelist} [if] [in] [, options]

其中,namelist 为被解释变量。需要注意的是,这里要填写被解释变量名称的不变部分。例如,被解释变量为城市 GDP,时间为 2017-2020 年。在宽面板数据结构下,则有四个被解释变量:GDP2017、GDP2018、GDP2019、GDP2020,此时仅需填写 GDP 即可。

必需的 options

  • window:分析的时间范围。若 1999 年至 2010 年,每年均进行分析,可填写为 window(1999/2010)。若每隔两年进行比较,写法为 window(1999(2)2010),以此类推;
  • treatment:需要分析的核心解释变量。语法为 treatment(varname, varying(varname))。注意:该命令一个最重要的优势是可以直接进行不同控制变量集下的比较,因此可以添加多个 treatment,具体可参考后文实例。

其他的 options

  • command:显示隐含的回归指令;
  • noconstant:取消所有估计中的常数项;
  • level():设定图形展示的置信区间,默认值为 95%;
  • first:当进行面板 IV 估计时,报告第一阶段估计结果;
  • legend(off):关闭图例;
  • absorb:回归中包含的固定效应。由于该命令是基于 reghdfe 编写的,需要添加 absorb(fe_name)
  • timeabsorb:要包含在回归中的时变固定效应 (同样仅包含名称的不变部分);
  • controls:回归中要包含的控制变量;
  • timecontrols:回归中包含的时变控制变量 (同样仅包含名称的不变部分)。注意:在该命令中,控制变量需要区分为时变控制变量和非时变控制变量。例如城市地理、文化因素是非时变的,需要用 controls 设定,城市经济发展或产业结构是时变的,即用 timecontrols 进行设定;
  • cluster(varname):设定聚类标准误;
  • vce(robust):设定稳健标准误;
  • aweight(varname)/fweight(varname):添加估计的权重。

3. 实例演示

3.1 数据处理

在本节,我们将使用 nlswork.dta 数据展示 multicoefplot 命令的具体应用。nlswork.dta 是一份针对美国年轻女性职业与工资状况的全国追踪调查数据。在本例中,我们使用收入的自然对数 ln_wage 作为被解释变量,个体的工作任期 tenure 作为核心解释变量。为了更好地熟悉该命令,模型中包括了非时变的控制变量与时变控制变量,具体设定如下:

  • 非时变的控制变量包括:种族 race、出生年份 birth_yr、是否大学毕业 collgrad、以及是否位于南方 south
  • 时变控制变量包括:年龄 age、工作经历 ttl_exp、以及是否位于大城市 not_smsa
. webuse nlswork, clear

. * 仅保留 1969、1971、1973、1975、1977 五年观测值
. keep if inlist(year, 69,71,73,75,77)

. * 由于该数据是一个标准的长面板数据,因此需要将其转化为宽面板数据
. reshape wide birth_yr age race msp nev_mar grade collgrad not_smsa c_city ///
> south ind_code occ_code union wks_ue ttl_exp tenure hours wks_work ///
> ln_wage, i(idcode) j(year)

. * 为了保证非时变变量是不随时变的,直接生成上述四个非时变变量在1969年的初始水平
. gen c_race=race69
. gen c_birth_yr=birth_yr69
. gen c_collgrad=collgrad69
. gen c_south=south69

. * 最后,生成个体在1969年职业的固定效应
. gen c_occ_code=occ_code69

3.2 图像绘制

. multicoefplot ln_wage, window(69(2)77) command legend(off) ///
> treatment(tenure, varying(tenure)) absorb(c_occ_code) ///
> controls(c_race c_birth_yr c_collgrad c_south) ///
> timecontrols(age ttl_exp not_smsa) ///
> xlabel(1 "1969" 2 "1971" 3 "1973" 4 "1975" 5 "1977") ///
> yline(0, lp(dash) lc(red*0.7))

该命令绘制的图形还是十分美观的,详细展示了 1969、1971、1973、1975、1977 五个不同年份个体工作任期 tenure 对收入自然对数 ln_wage 影响的点估计和置信区间。从图中可以看出,只有在 1969 年,tenureln_wage 的影响未通过 5% 的统计显著性检验。1973 年 tenureln_wage 的估计系数最大。

该命令估计出的五个系数和如下回归完全一致:

. reghdfe ln_wage69 tenure69 c_race c_birth_yr c_collgrad c_south age69 ttl_exp69 not_smsa69, a(c_occ_code)
. reghdfe ln_wage71 tenure71 c_race c_birth_yr c_collgrad c_south age71 ttl_exp71 not_smsa71, a(c_occ_code)
. reghdfe ln_wage73 tenure73 c_race c_birth_yr c_collgrad c_south age73 ttl_exp73 not_smsa73, a(c_occ_code)
. reghdfe ln_wage75 tenure75 c_race c_birth_yr c_collgrad c_south age75 ttl_exp75 not_smsa75, a(c_occ_code)
. reghdfe ln_wage77 tenure77 c_race c_birth_yr c_collgrad c_south age77 ttl_exp77 not_smsa77, a(c_occ_code)

在图中,初始年份 1969 和终止年份 1977 存在两条虚线,影响美观,这可能是命令自身的问题。经过测试,可通过添加一条 xline 进行解决:

. multicoefplot ln_wage, window(69(2)77) command legend(off) ///
> treatment(tenure, varying(tenure)) absorb(c_occ_code) ///
> controls(c_race c_birth_yr c_collgrad c_south) ///
> timecontrols(age ttl_exp not_smsa) ///
> xlabel(1 "1969" 2 "1971" 3 "1973" 4 "1975" 5 "1977") ///
> yline(0, lp(dash) lc(red*0.7)) xline(0)

3.3 同时估计并可视化不同模型

笔者认为,该命令最强大的一点是,其可以同时绘制在不同控制变量集下的估计系数及其置信区间。以下考虑三个不同的模型:不加控制变量、加入不随时变控制变量、以及加入随时变控制变量。Stata 具体代码如下:

. multicoefplot ln_wage, window(69(2)77) command treatment1(tenure, varying(tenure)) ///
> absorb(c_occ_code) treatment2(tenure, varying(tenure)) absorb2(c_occ_code) ///
> controls2(c_race c_birth_yr c_collgrad c_south) treatment3(tenure, varying(tenure)) ///
> absorb3(c_occ_code) timecontrols3(age ttl_exp not_smsa) ///
> controls3(c_race c_birth_yr c_collgrad c_south) ///
> xlabel(1 "1969" 2 "1971" 3 "1973" 4 "1975" 5 "1977") ///
> legend(1 "Baseline" 2 "Control Xi" 3 "Control Xi+Xit") ///
> yline(0, lp(dash) lc(red*0.7)) xline(0)

值得注意的是,如果此时想添加一条垂直于 x 轴的辅助线,以 1973 年为例,此时命令中不应该添加 xline(1973) ,而应该添加 xline(3)。即此时图中五个估计结果横轴对应的是 1~5 而不是 1969~1977。具体代码如下:

. multicoefplot ln_wage, window(69(2)77) command treatment1(tenure, varying(tenure)) ///
> absorb(c_occ_code) treatment2(tenure, varying(tenure)) absorb2(c_occ_code) ///
> controls2(c_race c_birth_yr c_collgrad c_south) treatment3(tenure, varying(tenure)) ///
> absorb3(c_occ_code) timecontrols3(age ttl_exp not_smsa) ///
> controls3(c_race c_birth_yr c_collgrad c_south) ///
> xlabel(1 "1969" 2 "1971" 3 "1973" 4 "1975" 5 "1977") ///
> legend(1 "Baseline" 2 "Control Xi" 3 "Control Xi+Xit") ///
> yline(0, lp(dash) lc(red*0.7)) xline(3, lp(dash) lc(blue*0.7))

4. 相关推文

Note:产生如下推文列表的 Stata 命令为:
lianxh 可视化, m
安装最新版 lianxh 命令:
ssc install lianxh, replace

  • 专题:专题课程
    • ⏩连享会公开课:实证研究中的数据可视化
  • 专题:数据处理
    • Stata:边际处理效应及其可视化-mtefe-T309
    • Stata: 约翰霍普金斯大学 COVID-19 疫情数据处理及可视化
  • 专题:Stata绘图
    • Stata绘图-可视化:组间差异比较散点图
    • Stata可视化:biplot一图看尽方差、相关性和主成分
    • Stata绘图-组间差异可视化:不良事件火山图、点阵图
    • forest-森林图:分组回归系数可视化
    • Stata绘图:回归系数可视化-论文更出彩
    • Stata绘图:世行可视化案例-条形图-密度函数图-地图-断点回归图-散点图
    • Stata绘图:随机推断中的系数可视化
  • 专题:结果输出
    • Stata可视化:让他看懂我的结果!
  • 专题:回归分析
    • Stata:在线可视化模拟-OLS-的性质
  • 专题:Python-R-Matlab
    • Python 调用 API 爬取百度 POI 数据小贴士——坐标转换、数据清洗与 ArcGIS 可视化
  • 专题:工具软件
    • 知乎热议:有哪些一用就爱上的可视化工具?
  • 专题:其它
    • 数据可视化:带孩子们边玩边学吧

课程推荐:因果推断实用计量方法
主讲老师:丘嘉平教授
🍓 课程主页https://gitee.com/lianxh/YGqjp

New! Stata 搜索神器:lianxhsongbl  GIF 动图介绍
搜: 推文、数据分享、期刊论文、重现代码 ……
👉 安装:
. ssc install lianxh
. ssc install songbl
👉  使用:
. lianxh DID 倍分法
. songbl all

🍏 关于我们

  • 连享会 ( www.lianxh.cn,推文列表) 由中山大学连玉君老师团队创办,定期分享实证分析经验。
  • 直通车: 👉【**百度一下:**连享会】即可直达连享会主页。亦可进一步添加 「知乎」,「b 站」,「面板数据」,「公开课」 等关键词细化搜索。


您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存